{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Extended Born data inversion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.append(\"/net/server/homes/sep/gbarnier/code/gpu/acousticIsoOp/test/lib/python/\")\n",
    "import genericIO\n",
    "import SepVector\n",
    "import Hypercube\n",
    "import Acoustic_iso_double\n",
    "import numpy as np\n",
    "import time\n",
    "#Solver library\n",
    "import pyLCGsolver as LCG\n",
    "import pyProblem as Prblm\n",
    "import pyStopperBase as Stopper\n",
    "from sys_util import logger"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Creating background model\n",
    "!Pad <velocityMarmousi.H beg1=105 end1=105 beg2=102 end2=102 extend=1 | Pad beg1=5 end1=5 beg2=5 end2=5 > velocityMarmousi.pad.H\n",
    "!Smooth <velocityMarmousi.pad.H rect1=5 rect2=5 repeat=3 > background.pad.H\n",
    "#Creating reflectivity\n",
    "!Add velocityMarmousi.pad.H background.pad.H scale=1,-1 | Pad beg3=50 end3=50 > ext_reflectivity.pad.H\n",
    "!echo \"o3=-0.5\" >> ext_reflectivity.pad.H"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "ext_reflectivity.pad.H\n",
      "nts=1001\n",
      "dts=0.004\n",
      "sub=4\n",
      "nz=570\n",
      "nx=1914\n",
      "zPadMinus=100\n",
      "zPadPlus=110\n",
      "xPadMinus=100\n",
      "xPadPlus=104\n",
      "dz=0.01\n",
      "dx=0.01\n",
      "fMax=16\n",
      "zSource=10\n",
      "xSource=850\n",
      "nShot=50\n",
      "spacingShots=1\n",
      "depthReceiver=10\n",
      "nReceiver=1700\n",
      "dReceiver=1\n",
      "oReceiver=1\n",
      "saveWavefield=0\n",
      "wavefieldShotNumber=0\n",
      "blockSize=16\n",
      "fat=5\n",
      "nGpu=8\n"
     ]
    }
   ],
   "source": [
    "#Parameters for instantiating nonlinear operator\n",
    "#First argument is just a dummy one since it mimics the name of the main program (i.e., we mimic sys.argv)\n",
    "#vel = velocity model header file\n",
    "#model = wavelet header file\n",
    "#par = parameter file containing simulation information\n",
    "args1=[\"dummy arg\",\"vel=background.pad.H\",\"sources=wlt.H\",\"model=ext_reflectivity.pad.H\",\"par=parPythonTest.p\", \"nExt=101\", \"extension=offset\"]\n",
    "modelDouble, dataDouble, velDouble, parObject, sourcesVector, sourcesSignalsVector, receiversVector = Acoustic_iso_double.BornExtOpInitDouble(args1)\n",
    "#Printing parameter file for reference\n",
    "!cat parPythonTest.p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Elapsed time =  27.795830011367798  seconds\n"
     ]
    }
   ],
   "source": [
    "born_ext_op=Acoustic_iso_double.BornExtShotsGpu(modelDouble,dataDouble,velDouble,parObject,sourcesVector,sourcesSignalsVector,receiversVector)\n",
    "#Running forward operator\n",
    "t0 = time.time()\n",
    "born_ext_op.forward(False,modelDouble,dataDouble)\n",
    "t1 = time.time()\n",
    "print(\"Elapsed time = \",t1-t0,\" seconds\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe2380865c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline  \n",
    "import matplotlib.pyplot as plt\n",
    "data = np.reshape(dataDouble.getNdArray()[0,:,:],(1700,1001))\n",
    "plt.imshow(data.T);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LINEAR CONJUGATE GRADIENT SOLVER\n",
      "Restart folder: /tmp/restart_2019-01-09T17-45-14.214854/\n",
      "\n",
      "iter = 0 obj = 3.534881256612299e-14 residual norm = 2.658902644725458e-07 gradient norm= 3.518276368483751e-14 feval = 2\n",
      "iter = 1 obj = 2.2529858939496334e-14 residual norm = 2.122727380537981e-07 gradient norm= 3.518276368483751e-14 feval = 3\n",
      "iter = 2 obj = 1.8058674572906635e-14 residual norm = 1.9004565388058836e-07 gradient norm= 2.5860481697682555e-14 feval = 5\n",
      "iter = 3 obj = 1.460028677149984e-14 residual norm = 1.7088174786294985e-07 gradient norm= 2.3705040344936326e-14 feval = 7\n",
      "iter = 4 obj = 1.1947124481289225e-14 residual norm = 1.545776484590533e-07 gradient norm= 1.863456390333463e-14 feval = 9\n",
      "iter = 5 obj = 9.665613830158833e-15 residual norm = 1.3903678564020083e-07 gradient norm= 1.694600711111497e-14 feval = 11\n",
      "iter = 6 obj = 7.927672788243341e-15 residual norm = 1.2591800668815267e-07 gradient norm= 1.5652230352753913e-14 feval = 13\n",
      "iter = 7 obj = 6.597117111863441e-15 residual norm = 1.148661539218665e-07 gradient norm= 1.3921642938658548e-14 feval = 15\n",
      "iter = 8 obj = 5.668544966975717e-15 residual norm = 1.0647576687006222e-07 gradient norm= 1.1226965165097181e-14 feval = 17\n",
      "iter = 9 obj = 4.853298876581446e-15 residual norm = 9.852206517280138e-08 gradient norm= 1.0696509087813281e-14 feval = 19\n",
      "iter = 10 obj = 4.248460828758846e-15 residual norm = 9.217875174272194e-08 gradient norm= 9.267552647334015e-15 feval = 21\n",
      "Terminate: maximum number of iterations reached\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#Create L2-norm linear problem\n",
    "model_vec = modelDouble.clone()\n",
    "model_vec.zero()\n",
    "L2Prob = Prblm.ProblemL2Linear(model_vec,dataDouble,born_ext_op)\n",
    "#Create stopper\n",
    "niter = 10\n",
    "Stop  = Stopper.BasicStopper(niter=niter)\n",
    "#Create solver\n",
    "LCGsolver = LCG.LCGsolver(Stop,logger=logger(\"test.log\"))\n",
    "LCGsolver.setDefaults(iter_buffer=None,iter_sampling=1)\n",
    "#Running the solver\n",
    "LCGsolver.run(L2Prob)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
